home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 013 / defrag.arc / DEFRAG.BAS (.txt) next >
Encoding:
GW-BASIC  |  1984-05-15  |  4.8 KB  |  128 lines

  1. 1000  ' Birk Binnard receives EMAIL at COMPUSERVE #72356,556 
  2. 1010  '                                RBBS at (213) 410-0714 
  3. 1020  ' ++++DEFRAG V 1.0 ++++          RBBS at (213) 973-2374 
  4. 1030  '                                RBBS at (213) 973-4497 
  5. 1040  DEFINT A-Z:DIM N1$(128),COPY(128,2) 
  6. 1050  KEY OFF:CLOSE:CLS:BLANKS$=STRING$(60," "):RESTART=0:L$=STRING$(20,205) 
  7. 1060  ON KEY(1) GOSUB 1200'pick file 
  8. 1070  ON KEY(2) GOSUB 1400'restart 
  9. 1080  ON KEY(3) GOSUB 1270'copy files 
  10. 1090  ON KEY(7) GOSUB 1420'delete files 
  11. 1100  ON KEY(9) GOSUB 1520'DOS command 
  12. 1110  ON KEY (10) GOSUB 1380'end 
  13. 1120  ON KEY (11) GOSUB 1580'up 
  14. 1130  ON KEY (12) GOSUB 1600'left 
  15. 1140  ON KEY (13) GOSUB 1620'right 
  16. 1150  ON KEY (14) GOSUB 1640'down 
  17. 1160  FOR I=1 TO 10:KEY I,"":NEXT 
  18. 1170  KEY 1,"PICK":KEY 2,"RESTRT":KEY 3,"COPY":KEY 7,"DELETE":KEY 9,"COMAND" 
  19. 1180  KEY 10,"END":GOTO 1670 
  20. 1190  ' 
  21. 1200  NOW=NOW+1:IF INDEX>=0 AND NOW<=NFIL THEN 1210 ELSE 1220'pick file 
  22. 1210  IF COPY(INDEX,2)<0 THEN 1230 
  23. 1220  NOW=NOW-1:BEEP:RETURN 2090 
  24. 1230  COPY(NOW,1)=INDEX:COPY(INDEX,2)=NOW:SCOL=POS(0)-2 
  25. 1240  LOCATE ROW,SCOL:COLOR 12:PRINT USING "###";NOW;:COLOR 7:COL=SCOL 
  26. 1250  LOCATE ROW,COL:RETURN 2090 
  27. 1260  ' 
  28. 1270  LOCATE MAXROW+4,1:PRINT"You have selected ";NOW;"of";NFIL;"files." 
  29. 1280  LOCATE MAXROW+6,1:PRINT "Do you want to do the Copy operation? (y/n) -->"; 
  30. 1290  X$=INPUT$(1):PRINT X$:IF INSTR("Yy",X$)>0 THEN 1310 
  31. 1300  LOCATE MAXROW+3,1:PRINT BLANKS$:LOCATE MAXROW+5,1:PRINT BLANKS$:GOTO 1360 
  32. 1310  KEY OFF:GOSUB 2260:FOR I=1 TO NOW 
  33. 1320     LOCATE 3,10 
  34. 1330     PRINT"Copying file "+N1$(COPY(I,1))+" from "+SD$+" to "+TD$+"      " 
  35. 1340     CMD$="copy "+SD$+N1$(COPY(I,1))+" "+TD$:GOSUB 2210 
  36. 1350  NEXT 
  37. 1360  N=0:ROW=MINROW:COL=1:RETURN 2010 
  38. 1370  ' 
  39. 1380  RETURN 2130'end program 
  40. 1390  ' 
  41. 1400  CLS:RESTART=-1:CLOSE:KILL DIRFIL$:RETURN 1740'restart 
  42. 1410  ' 
  43. 1420  LOCATE MAXROW+4,1:PRINT "You have selected";NOW;"files to DELETE." 
  44. 1430  LOCATE MAXROW+6,1:PRINT"Do you want to do the Delete operation (y/n)?-->"; 
  45. 1440  X$=INPUT$(1):PRINT X$:IF INSTR("Yy",X$)>0 THEN 1460 
  46. 1450  LOCATE MAXROW+3,1:PRINT BLANKS$:LOCATE MAXROW+5,1:PRINT BLANKS$:GOTO 1500 
  47. 1460  KEY OFF:GOSUB 2260:FOR I=1 TO NOW'delete files 
  48. 1470     LOCATE 3,10:PRINT"Deleting file "+N1$(COPY(I,1))+" from "+SD$+"      " 
  49. 1480     KILL SD$+N1$(COPY(I,1)) 
  50. 1490  NEXT 
  51. 1500  CLOSE:KILL DIRFIL$:RETURN 1880 
  52. 1510  ' 
  53. 1520  GOSUB 2260:LOCATE 3,10'DOS command 
  54. 1530  INPUT "Enter DOS command -->",CMD$ 
  55. 1540  CLS:KEY OFF:GOSUB 2210:COLOR 12 
  56. 1550  LOCATE 25,1,1,0,13:PRINT"Press any key to continue -->";:X$=INPUT$(1) 
  57. 1560  COLOR 7:GOSUB 2260:CLOSE:KILL DIRFIL$:RETURN 1880 
  58. 1570  ' 
  59. 1580  ROW=ROW-1:IF ROW<MINROW THEN ROW=MAXROW 
  60. 1590  RETURN 2090 
  61. 1600  COL=COL-16:IF COL<1 THEN COL=65 
  62. 1610  RETURN 2090 
  63. 1620  COL=COL+16:IF COL>80 THEN COL=1 
  64. 1630  RETURN 2090 
  65. 1640  ROW=ROW+1:IF ROW>MAXROW THEN ROW=MINROW 
  66. 1650  RETURN 2090 
  67. 1660  ' 
  68. 1670  KEY(1) ON:KEY(2) ON:KEY(3) ON:KEY(7) ON:FOR I=9 TO 14:KEY(I) ON:NEXT 
  69. 1680  GOSUB 2260:MINROW=4 
  70. 1690  LOCATE 4,10:PRINT"Enter work (RAM) Drive letter (no colon)-->";:LOCATE ,,1 
  71. 1700  RD$="a:":D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D=13 THEN 1740 
  72. 1710  IF D<97 THEN D=D+32 
  73. 1720  IF D<97 OR D>100 THEN BEEP: GOTO 1690 
  74. 1730  RD$=D$+":"'   RAM disk 
  75. 1740  LOCATE 6,10:PRINT"Enter Source Drive letter (no colon)-->";:LOCATE ,,1 
  76. 1750  D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D<97 THEN D=D+3 
  77. 1760  IF D<97 OR D>100 THEN BEEP: GOTO 1740 
  78. 1770  SD$=D$+":"'   source drive 
  79. 1780  LOCATE 8,10:PRINT"Enter Target Drive letter (no colon)-->";:LOCATE ,,1 
  80. 1790  D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D<97 THEN D=D+32 
  81. 1800  IF D<97 OR D>100 THEN BEEP: GOTO 1780 
  82. 1810  TD$=D$+":"'   target drive 
  83. 1820  IF RESTART OR RD$="a:" THEN 1880 
  84. 1830  PRINT:PRINT:PRINT TAB(10); 
  85. 1840  PRINT"Copying COMMAND.COM and SORT.EXE to work (RAM) disk." 
  86. 1850  CMD$="copy a:command.com "+RD$:GOSUB 2210 
  87. 1860  ENVIRON "COMSPEC="+RD$+"\COMMAND.COM"'  use command.com on ram disk 
  88. 1870  CMD$="copy a:sort.exe "+RD$:GOSUB 2210 
  89. 1880  DIRFIL$=RD$+"dir.dat":NOW=0 
  90. 1890  FOR I=1 TO 128:COPY(I,1)=-1:COPY(I,2)=-1:NEXT 
  91. 1900  PRINT:PRINT TAB(10); 
  92. 1910  PRINT"Reading and sorting directory entries for disk in drive "+SD$ 
  93. 1920  CMD$="dir "+SD$+"|"+RD$+"sort|"+RD$+"sort/+10>"+DIRFIL$:GOSUB 2210 
  94. 1930  OPEN DIRFIL$ FOR INPUT AS #1 
  95. 1940  PRINT:FOR I=1 TO 4:INPUT#1,A$:NEXT:NFIL=0' discard header lines 
  96. 1950  IF EOF(1) THEN 1990 ELSE INPUT#1,A$:NFIL=NFIL+1:MID$(A$,9)="." 
  97. 1960  N=INSTR(9,A$," "):IF N=10 THEN MID$(A$,9)=" " 
  98. 1970  N=INSTR(1,A$," "):IF N>8 THEN 1980 ELSE A$=LEFT$(A$,N-1)+MID$(A$,9,4) 
  99. 1980  N1$(NFIL)=LEFT$(A$,12):GOTO 1950 
  100. 1990  NFIL=NFIL-2:N=0:COL=1:ROW=MINROW:IF NFIL>0 THEN 2010 
  101. 2000  CLS:PRINT"The disk in drive "+SD$+" has no standard files.":GOTO 2100 
  102. 2010  GOSUB 2260:PRINT "The files on drive "+SD$+" are:" 
  103. 2020  N=N+1:LOCATE ROW,COL 
  104. 2030  COLOR 12:IF COPY(N,2)<0 THEN PRINT "   "; ELSE PRINT USING"###";COPY(N,2); 
  105. 2040  COLOR 7:PRINT CHR$(27)+N1$(N); 
  106. 2050  COL=COL+16:IF COL>80 THEN ROW=ROW+1:COL=1 
  107. 2060  IF N<NFIL THEN 2020 ELSE IF COL=1 THEN ROW=ROW-1 
  108. 2070  MAXROW=ROW:ROW=MINROW:COL=1 
  109. 2080  PRINT:PRINT:PRINT"There are";NFIL;"files on the disk in drive ";SD$; 
  110. 2090  INDEX=(ROW-MINROW)*5+(COL+15)/16:IF INDEX>NFIL THEN INDEX=-1 
  111. 2100  KEY ON:LOCATE ROW,COL+2,1,0,13 
  112. 2110  GOTO 2110'loop waiting for fkey interrupt 
  113. 2120  ' 
  114. 2130  CLOSE #1:KILL DIRFIL$:IF RD$="a:" THEN 2190 
  115. 2140  KILL RD$+"sort.exe":KILL RD$+"command.com" 
  116. 2150  ENVIRON "COMSPEC=A:\COMMAND.COM"'  use command.com on drive a 
  117. 2160  KEY OFF:KEY 1,"LIST ":KEY 2,"RUN"+CHR$(13):KEY 3,"LOAD"+CHR$(34) 
  118. 2170  KEY 4,"SAVE"+CHR$(34):KEY 5,"FILES":KEY 6,"SYSTEM":KEY 7,"EDIT " 
  119. 2180  KEY 8,"CLS"+CHR$(13):KEY 9,"KEY ":KEY 10,"RENUM " 
  120. 2190  GOSUB 2260:LOCATE 3,1,1,11,12:PRINT"DEFRAG ended.":KEY ON:PRINT:END 
  121. 2200  ' 
  122. 2210  T1=PEEK(&H30):T2=PEEK(&H31)'execute shell for cmd$ 
  123. 2220  SHELL CMD$
  124. 2230  POKE &H30,T1:POKE &H31,T2
  125. 2240  RETURN
  126. 2250  '
  127. 2260  CLS:COLOR 14:PRINT TAB(10);L$;" D E F R A G ";L$:COLOR 7:RETURN
  128.